package ar.edu.unrn.lia.model;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "puntoInteres")
public class PuntoInteres extends BaseEntity implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3790857911991369185L;

	public enum Tipo {
		POLICIA("Policia"), ESCUELA("Escuela"), HOSPITAL("Hospital"), UNIVERSIDAD("Universidad"), SUPER("Supermercado");

		private String valor;

		private Tipo(String valor) {
			this.valor = valor;
		}

		@Override
		public String toString() {
			return valor;
		}
	}
	
	
	private Coordenada coordenada = new Coordenada();
	private String direccion;
	private Integer numero;
	private Barrio barrio;
	private Tipo tipo;
	private String descripcion;
	

	public PuntoInteres() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	
	
	@NotNull(message = "{name.notnull}")
	@Enumerated(EnumType.STRING)
	public Tipo getTipo() {
		return tipo;
	}




	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}

	
	


	@NotNull(message = "{name.notnull}")
	public String getDescripcion() {
		return descripcion;
	}



	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}



	@Embedded
	@NotNull(message = "{name.notnull}")
	public Coordenada getCoordenada() {
		return coordenada;
	}

	public void setCoordenada(Coordenada coordenada) {
		this.coordenada = coordenada;
	}

	@NotNull(message = "{name.notnull}")
	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	@NotNull(message = "{name.notnull}")
	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	@NotNull(message = "{name.notnull}")
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "barrio_id", nullable = false)
	public Barrio getBarrio() {
		return barrio;
	}

	public void setBarrio(Barrio barrio) {
		this.barrio = barrio;
	}

}
